package admin

import (
	"e_mall_server/models"
	"e_mall_server/service"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"strconv"
)

/**
 * @Author: zhaobin
 * @Description 对表goods_cate_attribute进行相关操作
 * @Date: 2022-05-09 21:11
 */

// GetGoodsCateAttributeListByCateId 获取cate_id分类参数列表接口
func GetGoodsCateAttributeListByCateId(c *gin.Context) {
	cateId, err := strconv.ParseInt(c.Query("cate_id"), 10, 64)
	goodsCateAttributeList, err := service.GetGoodsCateAttributeListByCateId(cateId)
	if err != nil {
		zap.L().Error("service.GetGoodsCateAttributeList() failed", zap.Error(err))
		ResponseError(c, "查询分类参数列表失败")
		return
	}
	zap.L().Debug("分类参数数据", zap.Any("value", goodsCateAttributeList))
	ResponseSuccess(c, goodsCateAttributeList)
}

// AddGoodsCateAttribute 添加分类参数信息接口
func AddGoodsCateAttribute(c *gin.Context) {
	goodsCateAttribute := models.GoodsCateAttribute{}
	if err := c.ShouldBind(&goodsCateAttribute); err != nil {
		zap.L().Error("AddGoodsCateAttribute with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}

	// 业务逻辑处理
	if err := service.AddGoodsCateAttribute(&goodsCateAttribute); err != nil {
		zap.L().Error("service.AddGoodsCateAttribute(&GoodsCateAttribute) failed", zap.Error(err))
		ResponseError(c, "增加分类参数失败 请重试")
		return
	}

	// 创建成功返回响应
	ResponseSuccess(c, nil)

}

// UpdateGoodsCateAttribute 修改分类参数信息接口
func UpdateGoodsCateAttribute(c *gin.Context) {
	goodsCateAttribute := models.GoodsCateAttribute{}
	if err := c.ShouldBind(&goodsCateAttribute); err != nil {
		zap.L().Error("UpdateGoodsCateAttribute with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}
	zap.L().Debug("GoodsCateAttribute数据", zap.Any("value", goodsCateAttribute))
	// 业务逻辑处理
	if count := service.UpdateGoodsCateAttribute(&goodsCateAttribute); count > 0 {
		// 创建成功返回响应
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, "修改分类参数失败 请重试")
}

// DeleteGoodsCateAttribute 删除分类参数接口
func DeleteGoodsCateAttribute(c *gin.Context) {
	id, err := strconv.ParseInt(c.Param("id"), 10, 64)
	if err != nil {
		zap.L().Error("DeleteGoodsCateAttribute with invalid param", zap.Error(err))
		ResponseError(c, "传入参数错误")
		return
	}
	count := service.DeleteGoodsCateAttributeById(id)
	if count > 0 {
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, "删除分类参数失败")
}

// GetGoodsCateAttributeDetailById 通过id查询分类参数信息
func GetGoodsCateAttributeDetailById(c *gin.Context) {
	idStr := c.Param("id")
	id, err := strconv.ParseInt(idStr, 10, 64)
	if err != nil {
		zap.L().Error("GetGoodsCateAttributeDetailById with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
	}
	GoodsCateAttribute, err := service.GetGoodsCateAttributeDetailById(id)
	if err != nil {
		zap.L().Error("service.GetGoodsCateAttributeDetailById(id) failed", zap.Error(err))
		ResponseError(c, "获取管理员信息错误")
		return
	}
	ResponseSuccess(c, GoodsCateAttribute)
}
